package com.lsc.clientfacade;

import java.io.InputStream;

import org.w3c.dom.*;

import com.lsc.tools.DomTools;
import com.lsc.tools.StreamTools;


public class WSResponse {
	
	/* attributs */

	private String statusCode;
	private String statusMessage;
	private Document dom;
	
	
	/**
	 * recupere la reponse en l'affichant a l'écran, utile pour débugguer 
	 * @param is le flux de la reponse
	 * @return une instance de cette classe avec tous les attributs aux bonnes valeurs
	 */
	static WSResponse makeResponseDebug(InputStream is){
		WSResponse res=null;
		try{
			String resp=StreamTools.streamToString(is);
			System.out.println("----la reponse----");
			System.out.println(resp);
			System.out.println("---fin reponse----");
			res=new WSResponse(resp);
		} catch(Exception x){
			x.printStackTrace();
		}
		return res;
	}
	
	/**
	 * Constructeur, a partir d'une chaine
	 * @param httpResp la réponse http à parser
	 */
	public WSResponse(String httpResp){
		dom=DomTools.loadDomFromString(httpResp);
		Element status=(Element)dom.getElementsByTagName("status").item(0);
		statusCode=status.getAttribute("code");
		statusMessage=status.getAttribute("message");
	}
	
	/**
	 * Constructeur, a partir d'un flux
	 * @param httpResp flux permettant de lire la réponse http à parser
	 */
	public WSResponse(InputStream httpResp){
		dom=DomTools.loadDomFromStream(httpResp);
		Element status=(Element)dom.getElementsByTagName("status").item(0);
		statusCode=status.getAttribute("code");
		statusMessage=status.getAttribute("message");
	}
	
	
	
	
	/*accesseurs*/
	
	public String getStatusCode() {
		return statusCode;
	}

	public String getStatusMessage() {
		return statusMessage;
	}

	public Document getDom() {
		return dom;
	}


}
